iT邦幫忙

2025 iThome 鐵人賽

DAY 19
0
AI & Data

AI、機器學習以及深度學習的語言學應用系列 第 19

Day 19 - Cross-Validation(交叉驗證)

  • 分享至 

  • xImage
  •  

之前在介紹 Decision Tree(決策樹)的時候,有講到要把資料切成 80% 給模型訓練,20% 給給模型測試訓練結果,這是最基本的模型評估方法。

但,它有一個缺點:只切一次,可能會因為剛好切到「好」或「壞」的資料,而導致模型的評估不穩定,因此,有另外一個方法可以去解決這個問題,就是交叉驗證(Cross-Validation)。

今天就要來介紹 Cross-Validation~


交叉驗證是什麼

  • 交叉驗證就是將同一份dataset,多次分割(split)成不同訓練集(training set)以及測試集(test set),並多次的測驗模型的能力。

  • 其中最經典的就是 K-fold Cross-Validation

  • K-fold Cross-Validation 核心概念:

    • 把資料集切成 K 份(folds)
    • 輪流用其中 1 份當作 測試集(test set),剩下 K-1 份當作 訓練集(training set)
      (因此每次驗證的training set以及test set都是不一樣的,同時,每筆資料都會當作測試或是訓練集)
    • 重複 K 次,每次換不同的 fold 當測試集
    • 最後取 K 次測試結果的平均值,作為模型的整體評估表現

那為什麼需要用交叉驗證的方式來測試模型呢?

1. 可以得到較為穩定且有信服力的預測

  • 我們在切割dataset的時候,不能夠去保證test set他所具有的代表性
  • 當我們只有少量的dataset時,切割出來的test set所能涵蓋的範圍太過狹小,不能夠去代表整體資料的特徵,因此可能這次測出來不好,但是下次測出來的結果又很好
    ➔ 運用cross-validation可以避免因為data的偏差而導致模型的能力受到誤判,因為可以得到很多accuracy score去做平均,不會受限於一次獨立的結論

2. 測試模型的敏感程度(model sensitivity)

  • 在做交叉驗證的時候,根據不同數量的folds,就會得到不同數量的準確率(accuracy score)
  • 可以從這些分數當中去看最好情況以及最差情況的模型表現,也就能進一步去判斷這個模型它對於新的data的適應程度(看它敏不敏感)

Stratified K-fold Cross-Validation

  • 假設dataset有一定的順序或是根據不同class有做整理,可能就會有不平衡的問題存在,得出來的accuracy score就會不準確
  • 因此stratified k-fold cross-validation可以去解決不平衡的困境,因為它會根據dataset裡class的比例去分配subset子集裡面的data分佈,如此一來subset裡的class比例就會跟整體的比例較為相似

Leave-one-out Cross-Validation

  • 這個交叉驗證方法是當 K 等於所有 data 的數量時,會只拿一個 data 來當作 test set
  • 不過因為這個驗證方式是exhaustive,全面性的,因此運算起來較為昂貴,通常會適用於當data數量很少的時候
  • 如果要自己定義test set的data數量,則會叫做Leave-P-out cross-validation

Reference 1
Reference 2
Reference 3


上一篇
Day 18 - Beam Search Algorithm
下一篇
Day 20 - Cross-Entropy Loss Function
系列文
AI、機器學習以及深度學習的語言學應用20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言